#ifndef NATIAVSCANLOG_H
#define NATIAVSCANLOG_H

#include "cominfo.h"
#include "widgets/defendertable.h"
#include "common.h"
#include "devcommon_global.h"

#include <QWidget>
#include <QDialog>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QTableView>
#include <QCheckBox>
#include <QPushButton>

#include <QTableView>
#include <QStandardItem>
#include <QStandardItemModel>
#include <QCheckBox>
#include <QFrame>
#include <QLabel>
#include <QEvent>
//#include <DGuiApplicationHelper>
#include <QTimer>
//#include <DSpinner>
#include <QStackedWidget>

class QVBoxLayout;
class QHBoxLayout;
class QLabel;
class QPushButton;

class DBusInvokerInterface;

/*
@classname:(NatiavScanLog)
@author：(mxz)
@discptions:(病毒查杀日志弹窗)
@hirts:(继承)
@datatime:(04-29)
*/
class DEVCOMMONSHARED_EXPORT NatiavScanLog : public QFrame
{
    Q_OBJECT
public:
    explicit NatiavScanLog(QWidget *parent = nullptr);
    ~NatiavScanLog();

    // 界面初始化
    void initGUI();
    // 初始化中间tableview布局
    QHBoxLayout *initTableWidget();
    // 获得扫描log数据
    void getlogData();
    // 打开日志文件
    void openLogFile(QString sFilepath);
    // 删除日志文件
    void deletelogFile(QString sFilepath);
    // 当前行选中
    Q_SLOT void currentRowClicked(const QModelIndex& index);
    // 判断全选按钮状态
    void checkBoxAllStatus();
    void appendFileInfo(ScanLogInfo info);
    // 设置当前进度
    void setCurrentProcess(int nCurrent);
    // 校验文本格式
    bool checkContext(QStringList list);
    // 获得按钮图标图片类型
    QIcon getButtonIcon();

signals:

protected:
    bool eventFilter(QObject *obj, QEvent *event);
    // 更改table 因改变表头宽度
    Q_SLOT void updateTableForWidth(int nLogicalIndex, int nOldSize, int nNewSize);

    // 刷新table 因字体改变
    void refreshTableByFontChange();
    // 表头点击排序
    Q_SLOT void sortByTableHeaderClicked(int index);

    // 刷新底部删除日志按钮 文案是否省略因字体改变
    void refreshBtnLogText();

public slots:
    // 全选
    void checkAll(int status);
    // 删除日志
    void deleteLog();
    // table表的单选
    void tableCheckItem();
    // 主题类型改变
    void themeTypeChange(ColorType themeType);

private:
    DBusInvokerInterface *m_monitorInterFaceServer; // 流量监控dbus类

    QCheckBox *m_checkBoxAll; // 全选框
    QPushButton *m_pBLog; // 删除日志
    QStandardItemModel *m_model;
    QTableView *m_tableView;
//    DGuiApplicationHelper *m_guiHelper; // 方便得到系统主题
    QLabel *m_proLable;
    int m_curret; // 当前
    QString m_ScanLogPath; // 日志文件路径
    QString m_currentDir; // 当前文件夹
    QStringList m_logFile; // 日志文件列表
};

#endif // NATIAVSCANLOG_H
